//
// Created by user on 2022/3/7.
//
/**
 * 1. 题目
给定一个二进制数组，你可以最多将 1 个 0 翻转为 1，找出其中最大连续 1 的个数。

示例 1：
输入：[1,0,1,1,0]
输出：4
解释：翻转第一个 0 可以得到最长的连续 1。
     当翻转以后，最大连续 1 的个数为 4。

注：
输入数组只包含 0 和 1.
输入数组的长度为正整数，且不超过 10,000
 */
#include <vector>
#include <algorithm>
using namespace std;
int findMaxConsecutiveOnes(vector<int>& nums) {
    int ans = 0;
    int left=0;
    int right =0;
    int windowZeroCnt = 0;
    while (right<nums.size()){
        if(nums[right]==0){
            windowZeroCnt++;
            if(windowZeroCnt==2){
                ans = max(ans, right-left);
            }
        }
        while (windowZeroCnt==2){
            if(nums[left]==0)windowZeroCnt--;
            left++;
        }
        right++;
    }
    return max(ans, right-left);

}